package com.javaweb.web.eo.user;

import com.javaweb.annotation.validate.IntegerValueRange;
import com.javaweb.constant.SystemConstant.LoginConstant;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;

/**
 * 用户登录请求参数
 * @author tank2140896
 */
@Getter
@Setter
public class UserLoginRequest {

	/**
	 * 用户账号
	 * <p>
	 * 1、不能为空；
	 * 2、3-20位数字和字母（小写或大写）的组合
	 */
	@NotBlank(message="validated.user.userName.notEmpty")
	@Pattern(regexp=LoginConstant.USERNAME_REGEXP,message="validated.user.userName.pattern")
	private String username;
	
	/**
	 * 用户密码
	 * <p>
	 * 1、不能为空；
	 * 2、3-20位数字和字母（小写或大写）的组合，此处不使用注解校验，因为密码需要先解码
	 * 3、最长20位的密码加密后也不应该超过100位
	 * @see com.javaweb.web.controller.AllOpenController#decodePassword
	 */
	@NotBlank(message="validated.user.password.notEmpty")
	@Size(max=100,message="validated.user.password.tooLong")
	private String password;
	
	/**
	 * 客户端类型
	 * <p>
	 * 1：PC端（默认），当然还可以类似细分为内网、外网、专网等；2：安卓端；3：IOS端
	 */
	@IntegerValueRange(vauleArray={1,2,3},message="validated.user.clientType.pattern")
	private Integer clientType = 1;
	
	/**
	 * 登录方式
	 * <p>
	 * 1：账号密码登录（默认）；2：二维码扫码登录；3：短信验证码登录
	 */
	@IntegerValueRange(vauleArray={1,2,3},message="validated.user.loginWay.pattern")
	private Integer loginWay = 1;
	
	/**
	 * 图形验证码
	 */
	@NotBlank(message="validated.user.captcha.notEmpty")
	private String captchaCode;
	
	/**
	 * 时间戳（用于解码密码）
	 */
	@NotBlank(message="validated.user.captcha.fail")
	@Size(max=14,message="validated.user.captcha.fail")
	private String time;
	
	/**
	 * 验证值
	 */
	@NotBlank(message="validated.user.captcha.fail")
	@Size(max=100,message="validated.user.captcha.fail")
	private String code;
	
}
